package cn.psvmc.cxzapi.model.order;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单表
 *
 * @Author auto
 * @Date 2024-08-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_order")
public class TOrder implements Serializable {

    @Serial
    private static final long serialVersionUID = -8810982191272336654L;
    //订单id
    @TableId(value = "order_id", type = IdType.AUTO)
    private Integer orderId;

    //订单号
    @TableField("order_code")
    private String orderCode;

    //用户名
    @TableField("username")
    private String username;

    //用户手机号
    @TableField("userphone")
    private String userphone;

    //用户地址
    @TableField("user_address")
    private String userAddress;

    //是否确认（0未确认 1已确认）
    @TableField("confirmed")
    private Integer confirmed;

    //确认人id
    @TableField("confirmed_id")
    private Integer confirmedId;

    //状态（0待付款1待风控2待发货3已发货4待归还5归还中6交易完成7已取消）
    @TableField("order_status")
    private Integer orderStatus;

    //是否生成风控报告（0未生成 1已生成）
    @TableField("control_report")
    private Integer controlReport;

    //风控报告内容
    @TableField("report_content")
    private String reportContent;

    //风控状态（0待风控 1已通过 2已拒绝）
    @TableField("control_status")
    private Integer controlStatus;

    //风控人id
    @TableField("control_id")
    private Integer controlId;

    //风控时间
    @TableField("control_time")
    private LocalDateTime controlTime;

    //风控审核意见
    @TableField("control_comm")
    private String controlComm;

    //认证标识
    @TableField("certify_id")
    private String certifyId;

    //是否通过认证（0未认证 1已通过 2未通过）
    @TableField("certify_passed")
    private Integer certifyPassed;

    //认证URL
    @TableField("certify_url")
    private String certifyUrl;

    //审核建议
    @TableField("verify_recomment")
    private String verifyRecomment;

    //分值标准说明 分值在200至700之间，得分越低，风险越高（【620， ++）建议通过；【500， 620）建议审核；（--， 500）建议拒绝）
    @TableField("score_norm_explain")
    private String scoreNormExplain;

    //审核状态（0待处理1审核通过2拒绝）
    @TableField("check_status")
    private Integer checkStatus;

    //审核意见
    @TableField("check_comm")
    private String checkComm;

    //审核人id
    @TableField(value = "check_id")
    private Integer checkId;

    //审核时间
    @TableField(value = "check_time")
    private LocalDateTime checkTime;

    //所属商品id
    @TableField("goods_id")
    private Integer goodsId;

    //规格id
    @TableField("gsid")
    private Integer gsid;

    //类型（1普通订单2买断订单3赔偿款4运费5补租金6补押金）
    @TableField("order_type")
    private Integer orderType;

    //来源（1小程序2扫码）
    @TableField("source_type")
    private Integer sourceType;

    //买断所属订单
    @TableField("order_pid")
    private Integer orderPid;

    //租期（总期数）
    @TableField("lease_period")
    private Integer leasePeriod;

    //租期（天数）
    @TableField("day")
    private Integer day;

    //预计开始时间
    @TableField("plan_begin")
    private LocalDateTime planBegin;

    //预计结束时间
    @TableField("plan_end")
    private LocalDateTime planEnd;

    //实际开始时间
    @TableField("real_begin")
    private LocalDateTime realBegin;

    //实际结束时间
    @TableField("real_end")
    private LocalDateTime realEnd;

    //押金
    @TableField("deposit")
    private Double deposit;

    //押金支付状（0未支付1已支付2已解冻）
    @TableField("deposit_status")
    private Integer depositStatus;

    //订单当前剩余冻结金额
    @TableField("rest_amount")
    private Double restAmount;

    //预授权类型（1信用预授权 2普通资金预授权）
    @TableField("pre_auth_type")
    private Integer preAuthType;

    //可信签名字符串
    @TableField("order_str")
    private String orderStr;

    //追踪ID，需要获取之后创建业务订单时传入
    @TableField("source_id")
    private String sourceId;

    //公域收费场暴值
    @TableField("scene_id")
    private String sceneId;

    //买断价格
    @TableField("buy_price")
    private Double buyPrice;

    //实际支付买断价格
    @TableField("buy_price_after_store")
    private Double buyPriceAfterStore;

    //申请买断状态（0未申请 1已申请 2已买断 3已拒绝）
    @TableField("buyout_status")
    private Integer buyoutStatus;

    //是否续租（0未续租 1已续租）
    @TableField("renew_status")
    private Integer renewStatus;

    //续租次数
    @TableField("renew_num")
    private Integer renewNum;

    //总租金
    @TableField("rent")
    private Double rent;

    //优惠后总租金
    @TableField("rent_after_coupon")
    private Double rentAfterCoupon;

    //数量
    @TableField("num")
    private Integer num;

    //运费
    @TableField("shipping_fee")
    private Double shippingFee;

    //实付款
    @TableField("payment")
    private Double payment;

    //商户实际退回金额
    @TableField("send_back_fee")
    private Double sendBackFee;

    //快照（静态页面地址）
    @TableField("order_img")
    private String orderImg;

    //负责人id
    @TableField("manager_id")
    private Integer managerId;

    //标记
    @TableField("tags")
    private String tags;

    //商家id
    @TableField("storeid")
    private Integer storeid;

    //客户备注
    @TableField("customer_comm")
    private String customerComm;

    //商家备注
    @TableField("store_comm")
    private String storeComm;

    //客户id
    @TableField("customerid")
    private Integer customerid;

    //创建人id
    @TableField(value = "createid", fill = FieldFill.INSERT)
    private Integer createid;

    //创建时间
    @TableField(value = "createtime", fill = FieldFill.INSERT)
    private LocalDateTime createtime;

    //操作人id
    @TableField(value = "updateid", fill = FieldFill.INSERT_UPDATE)
    private Integer updateid;

    //操作时间
    @TableField(value = "updatetime", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatetime;

    //版本号
    @TableField("rversion")
    @Version
    private Integer rversion;

    //优惠券
    @TableField(exist = false)
    private List<Integer> couponIds;

    //申请取消状态（0未申请 1申请中）
    @TableField("cancel_status")
    private Integer cancelStatus;

    //申请取消原因（10押金问题 20租金问题 30多拍/错拍 40收货信息有误 50商品问题 60审核流程/时长问题 70发货问题 80商家问题 90我不想要了 100计划有变 110其他）
    @TableField("cancel_cause")
    private Integer cancelCause;

    //申请取消备注
    @TableField("cancel_comm")
    private String cancelComm;

    //申请取消时间
    @TableField("cancel_time")
    private LocalDateTime cancelTime;

    //申请取消审核人
    @TableField("cancel_check_id")
    private Integer cancelCheckId;

    //申请取消审核时间
    @TableField("cancel_check_time")
    private LocalDateTime cancelCheckTime;

    //申请取消审核状态（0默认 2同意 3拒绝）
    @TableField("cancel_check_status")
    private Integer cancelCheckStatus;

    //申请取消审核意见
    @TableField("cancel_check_comm")
    private String cancelCheckComm;

    //是否是白名单商品(0否1是)
    @TableField("is_white")
    private Integer isWhite;

    //订单结算比例
    @TableField("settlement_ratio")
    private Double settlementRatio;

    //买断价比例
    @TableField("renewal_rate")
    private Double renewalRate;

    //租期固定（0不固定1已固定）
    @TableField("lease_fixed")
    private Integer leaseFixed;

    //首期付款状态（0未支付 1已支付）
    @TableField("first_pay_status")
    private Integer firstPayStatus;

    //交易组件订单号
    @TableField("trade_component_order_id")
    private String tradeComponentOrderId;

    //支付宝授权资金订单号
    @TableField("auth_no")
    private String authNo;

    //支付宝唯一用户标识
    @TableField(exist = false)
    private String openid;

    //下单场景
    private String scene;

    //支付宝风控信息
    @TableField("credit_risk_info")
    private String creditRiskInfo;

    //免押金额
    @TableField("total_freeze_credit_amount")
    private String totalFreezeCreditAmount;

    //真实冻结金额
    @TableField("total_freeze_fund_amount")
    private String totalFreezeFundAmount;

    //下单类型（1普通下单2快捷下单）
    @TableField("add_type")
    private Integer addType;

    //支付宝智安盾风险等级(low / mid / high 严禁对“high”订单（用户）发货，返回空值不做限制)
    @TableField("risk_level")
    private String riskLevel;

    //支付宝智安盾风险评分(0.0~5.0)
    @TableField("risk_score")
    private String riskScore;
}
